package frescoextra

import com.facebook.common.memory.MemoryTrimType
import com.facebook.common.memory.MemoryTrimmable
import com.facebook.common.memory.MemoryTrimmableRegistry

/**
 * Try to fix OOM for Fresco, link is "https://github.com/facebook/fresco/issues/2136".
 */
class FrescoMemoryTrimmableRegistry : MemoryTrimmableRegistry {

    private val trimmables: MutableList<MemoryTrimmable> = mutableListOf()

    override fun registerMemoryTrimmable(trimmable: MemoryTrimmable) {
        trimmables.add(trimmable)
    }

    override fun unregisterMemoryTrimmable(trimmable: MemoryTrimmable) {
        trimmables.remove(trimmable)
    }

    @Synchronized
    fun trim(trimType: MemoryTrimType?) {
        for (trimmable in trimmables) {
            trimmable.trim(trimType)
        }
    }
}